/*
    This file is part of Epoch <http://code.google.com/p/epoch/>.
    
    Copyright (C) 2011  Adam Meily <meily.adam@gmail.com>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/


#include "JobScheduler.h"
#include "JobGroup.h"
#include "GenSignatureJob.h"
#include "ApplyDeltaJob.h"
#include "ShiftBasisJob.h"

JobScheduler::JobScheduler()
{

}

JobScheduler::~JobScheduler()
{

}

void JobScheduler::newRevision(const ShareFileRevision& revision)
{
    JobGroup group;
    if(!revision.full().exists())
        group.enqueue(ApplyDeltaJob(revision));
    
    if(!revision.signature().exists())
        group.enqueue(GenSignatureJob(revision));
    
    QList<ShareFileRevision> list = m_store->revisions(revision);
    QListIterator<ShareFileRevision> i(list);
    while(i.hasNext())
    {
        ShareFileRevision r = i.next();
        if(!r.full().exists())
            group.enqueue(ApplyDeltaJob(r));
        
        group.enqueue(ShiftBasisJob(revision, r));
    }
    
    enqueue(group);
}



